package 中等.贪心思想;

import java.util.HashSet;
import java.util.Set;

/**
 * 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ，它们的长度都是偶数 n 。
 * 你必须从 nums1 中移除 n / 2 个元素，同时从 nums2 中也移除 n / 2 个元素。移除之后，你将 nums1 和 nums2 中剩下的元素插入到集合 s 中。
 * 返回集合 s可能的 最多 包含多少元素。
 *
 * @ https://leetcode.cn/problems/maximum-size-of-a-set-after-removals/description/
 * @date 2024/01/07
 */
public class 移除后集合的最多元素数 {

    public static void main(String[] args) {

        Set<Integer> set1 = new HashSet<>();

        set1.add(5);

        for (Integer integer : set1) {
            set1.remove(5);
        }

        System.out.println();
    }

    /**
     * todo 未完成
     * 1，两个数组先去重
     * 2，想把两个数组不重复的数字先插入到集合 s 中
     * 3，剩下的数字是两个数组都有的，加上 nums1 还需要选择 3 个元素，nums2 还需要选择 1 个元素
     * 剩下的重复元素优先给较少的 nums2
     */
    public int maximumSetSize(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<>(), set2 = new HashSet<>();
        for (int num : nums1) {
            set1.add(num);
        }
        for (int num : nums2) {
            set2.add(num);
        }
        int need1 = nums1.length / 2, need2 = nums2.length / 2;

        for (Integer num : set1) {
            if (need1 > 0 && !set2.contains(num)) {
                need1--;
                set1.remove(num);
            }
        }
        for (Integer num : set2) {
            if (need2 > 0 && !set1.contains(num)) {
                need2--;
                set2.remove(num);
            }
        }
        if (need2 > need1) {

        }


        return 1;

    }

}
